/*
 * 
 * @Description:使用二维数组打印杨辉三角
 * 
 * @Author: rendc
 * 
 * @Date: 2025-07-24 11:03:29
 * 
 * @LastEditors: rendc
 * 
 * @LastEditTime: 2025-07-24 11:25:04
 */
public class Test02 {

  public static void main(String[] args) {
    // 定义要打印的行数
    int rows = 5;
    // 使用二维数组打印杨辉三角
    int[][] arr = new int[rows][];
    // 生成数组内容
    for (int i = 0; i < rows; i++) {
      // 创建每行对应的数组 每行数组有i+1个元素
      arr[i] = new int[i + 1];
      // 给数组填充元素
      // 每一行的首尾都是1
      // arr[i][0] = arr[i][i] = 1;
      arr[i][0] = 1;
      arr[i][i] = 1;
      // 计算中间的元素
      // 从第三行开始有中间的元素
      // 从二维数组下标的2开始有中间的元素
      for (int j = 1; j < i; j++) {
        // 每个数的值 = 它左上和右上之和
        arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
      }
    }
    // 输出杨辉三角
    for (int i = 0; i < rows; i++) {
      // 拼空格占位
      for (int k = 0; k < rows - i; k++) {
        System.out.print(" ");
      }
      for (int j = 0; j <= i; j++) {
        System.out.print(arr[i][j]);
        System.out.print(" ");
      }
      System.out.println("");
    }
  }
}